package cn.bugstack.infrastructure.gateway;

import cn.bugstack.infrastructure.gateway.dto.WeixinQrCodeRequestDTO;
import cn.bugstack.infrastructure.gateway.dto.WeixinQrCodeResponseDTO;
import cn.bugstack.infrastructure.gateway.dto.WeixinTemplateMessageDTO;
import cn.bugstack.infrastructure.gateway.dto.WeixinTokenResponseDTO;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;

/**
 * @author 丨一
 * @version 1.0
 * @title IWeixinApiService
 * @description: 微信 API
 * @date 2024/11/10 13:16
 */


public interface IWeixinApiService {

    /**
     * 获取 Access Token
     *
     * @param grantType
     * @param appId
     * @param appSecret
     * @return 响应结果
     */
    @GET("/cgi-bin/token")
    Call<WeixinTokenResponseDTO> getAccessToken(@Query("grant_type") String grantType,
                                                @Query("appid") String appId,
                                                @Query("secret") String appSecret);

    /**
     * @param accessToken     -> 出参
     * @param weixinQrCodeReqDTO -> 出参 请求体
     * @return 封装好的 Qr 凭证,可以用它来换取二维码
     */
    @POST("/cgi-bin/qrcode/create")
    Call<WeixinQrCodeResponseDTO> createQrCode(@Query("access_token") String accessToken, @Body WeixinQrCodeRequestDTO weixinQrCodeReqDTO);


    @POST("/cgi-bin/message/template/send")
    Call<Void> sendMessage(@Query("access_token") String accessToken, @Body WeixinTemplateMessageDTO weixinTemplateMessageDTO);

}
